package 剑指offer;

import leetcode.day_2020_12_14_12_21.TreeNode;

// 树的子结构
public class Offer26_JZ17 {
    public boolean HasSubtree(TreeNode root1, TreeNode root2) {
        boolean result = false;
        if (root1!=null && root2!=null) {
            if (root1.val == root2.val) {
                result = doSearchSubtree(root1, root2);
            }
            if (!result) {
                result = HasSubtree(root1.left, root2);
            }
            if (!result) {
                result = HasSubtree(root1.right, root2);
            }
        }
        return result;
    }

    public boolean doSearchSubtree(TreeNode root1, TreeNode root2) {
        if (root2 == null) {
            return true;
        }
        if (root1 == null) {
            return false;
        }

        if (root1.val != root2.val) {
            return false;
        }

        return doSearchSubtree(root1.left, root2.left) && doSearchSubtree(root1.right, root2.right);
    }
}
